// utils/dictUtil.js
import request from '@/utils/request.js'

const dictCache = {}

/**
 * 获取字典数据（支持缓存，首次从后端拉取）
 * @param {String} dictType 字典类型
 * @returns {Promise<Array>} Promise 字典数组
 */
function getDictData(dictType) {
  if (dictCache[dictType]) {
    return Promise.resolve(dictCache[dictType])
  }

  return request({
    url: '/system/dict-data/getDictDataByType',
    method: 'GET',
    params: { dictType : dictType }
  }).then(res => {
    const data = res.data || []
    dictCache[dictType] = data
    return data
  })
}

/**
 * 根据字典类型和值获取对应 label
 * @param {String} dictType 字典类型
 * @param {*} value 对应的值
 * @returns {Promise<String>} Promise 标签名
 */
function formatDictLabel(dictType, value) {
  return getDictData(dictType).then(items => {
    const item = items.find(i => i.value == value)
    return item ? item.label : value
  })
}

export default {
  getDictData,
  formatDictLabel
}
